package fun.boomcat.luckyhe.mirai.plugin.botcontrol.util;

import net.mamoe.mirai.console.command.CommandManager;
import net.mamoe.mirai.contact.Friend;
import net.mamoe.mirai.contact.Group;
import net.mamoe.mirai.contact.NormalMember;

public class ControlCommandHelp {
    public static String commandHelp(String primaryName, String[] secondaryNames) {
        StringBuilder sb = new StringBuilder();
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        sb.append(commandPrefix).append(primaryName).append("指令 ");
        if (secondaryNames.length != 0) {
            sb.append("别名：");
            for (String secondaryName : secondaryNames) {
                sb.append(commandPrefix).append(secondaryName).append(" ");
            }
        }

        sb.append("\n");
//        sb.append(commandPrefix).append(primaryName).append(" friendlist（别名：好友列表）    查看好友列表\n");
//        sb.append(commandPrefix).append(primaryName).append(" grouplist（别名：群列表）    查看群列表\n");
        sb.append(commandPrefix).append(primaryName).append(" friend <好友QQ> （别名：好友）    与好友相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" group（别名：群）    与群相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" event（别名：事件）    与事件通知相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" owner（别名：主人）    主人QQ相关操作\n");
        sb.append(commandPrefix).append(primaryName).append(" meg（别名：消息事件群）    与消息事件群相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" fr（别名：加好友请求）    与加好友请求相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" gr（别名：加群请求）    与加群请求相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" igr（别名：邀请加群请求）    与Bot被邀请加群请求相关的操作\n");
        sb.append(commandPrefix).append(primaryName).append(" dc（别名：直接对话）    与直接对话相关的操作\n");

        return sb.toString();
    }

    public static String groupHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        return commandPrefix + primaryName + " group <群号>    查看该群相关内容";
    }

    public static String friendHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();

        sb.append(commandPrefix).append(primaryName).append(" friend（别名：好友）    与好友相关的操作");

        return sb.toString();
    }

    public static String groupOperationHelp(String primaryName, Group group) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" group ").append(group.getId());
        sb.append(" 后接以下参数：\n");
        sb.append("member（别名：成员）    查看群所有成员\n");
        sb.append("member <成员QQ>    查看指定群成员信息\n");
        sb.append("settings（别名：设置）    查看群设置\n");
        sb.append("send <消息内容>（别名：发送）    向群发送消息\n");
        sb.append("quit （别名：退出）    退出群\n");

        return sb.toString();
    }

    public static String friendOperationHelp(String primaryName, Friend friend) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" friend ").append(friend.getId());
        sb.append(" 后接以下参数：\n");
        sb.append("delete（别名：删除）    删除好友\n");
//        sb.append("nudge（别名：戳一戳）    戳一戳好友\n");
        sb.append("send <消息内容> （别名：发送）    向好友发送消息\n");

        return sb.toString();
    }

    public static String groupMemberOperationHelp(String primaryName, NormalMember member) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" group ").append(member.getGroup().getId());
        sb.append(" member ").append(member.getId()).append(" 后接以下参数：\n");
        sb.append("namecard <新群昵称> （别名：群昵称）    修改群昵称\n");
        sb.append("specialtitle <新群头衔> （别名：头衔）    修改群头衔\n");
        sb.append("mute <禁言时长(秒)> （别名：禁言）    禁言\n");
        sb.append("unmute （别名：解除禁言）    解除禁言\n");
        sb.append("kick <附加消息> （别名：移除）    移除群成员并附带附加消息\n");
        sb.append("setadmin （别名：设为管理）    将该群成员设置为管理\n");
        sb.append("unsetadmin （别名：取消管理）    将该群成员的管理权取消\n");
        sb.append("send <消息内容> （别名：发送）    向群成员发送私聊消息\n");

        return sb.toString();
    }

    public static String messageEventGroupHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" meg 后接以下参数：\n");
        sb.append("add <群号>    添加一个群\n");
        sb.append("del <群号>    删除一个群\n");

        return sb.toString();
    }

    public static String friendRequestHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" fr 后接以下参数：\n");
        sb.append("accept <事件号>（别名：接受）    同意好友申请\n");
        sb.append("deny <事件号>（别名：拒绝）    拒绝好友申请\n");
        sb.append("del <事件号>（别名：删除）    删除一个好友申请事件（事件执行以上两个操作后需自行删除）");

        return sb.toString();
    }

    public static String memberJoinRequestHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" gr 后接以下参数：\n");
        sb.append("accept <事件号>（别名：接受）    同意加群申请\n");
        sb.append("deny <事件号>（别名：拒绝）    拒绝加群申请\n");
        sb.append("del <事件号>（别名：删除）    删除一个加群申请事件（事件执行以上两个操作后需自行删除）");

        return sb.toString();
    }

    public static String botInvitedJoinGroupRequestHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append(commandPrefix).append(primaryName).append(" igr 后接以下参数：\n");
        sb.append("accept <事件号>（别名：接受）    同意邀请进群\n");
        sb.append("ignore <事件号>（别名：忽略）    忽略邀请进群\n");
        sb.append("del <事件号>（别名：删除）    删除一个邀请进群事件（事件执行以上两个操作后需自行删除）");

        return sb.toString();
    }

    public static String directChattingHelp(String primaryName) {
        String commandPrefix = CommandManager.INSTANCE.getCommandPrefix();

        StringBuilder sb = new StringBuilder();
        sb.append("直接对话模式：设置了对方的QQ号后，对方的消息将不以事件形式显示，而是直接显示内容，主人也可以直接发送消息，不必使用指令发送，")
                .append("双方可以直接进行对话（即Bot作为两者中介）\n")
                .append(commandPrefix).append(primaryName).append(" dc 后接以下参数：\n")
                .append("set <对方QQ> <群号>（别名：设置）    设置对方的QQ号和来自的群号\n")
                .append("reset（别名：重置）    停止直接对话\n")
                .append("在设置中的两个参数有如下情况：\n")
                .append("对方QQ不为0，群为0：好友消息\n")
                .append("对方QQ不为0，群不为0：群临时消息\n")
                .append("对方QQ为0，群为0：关闭直接对话\n")
                .append("对方QQ为0，群不为0：群消息");

        return sb.toString();
    }
}
